home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / APPEXPRT.PAK / TEDITFIL.OWL < prev    next >
Text File  |  1997-05-06  |  7KB  |  233 lines

  1. <<[H]TEditFile [[TEditFile]]
  2. ##{hheader.snp}
  3. #include <owl/editfile.h>
  4.  
  5. ##<<TApplication QUERY_FILENAME_CPP [[Filename]]
  6. #include "[[Filename]].rh"            // Definition of all resources.
  7.  
  8.  
  9. //{{TEditFile = [[TEditFile]]}}
  10. class [[TEditFile]] : public TEditFile {
  11.   public:
  12.     [[TEditFile]](TWindow* parent = 0, int id = 0, const char far* text = 0, int x = 0, int y = 0, int w = 0, int h = 0, const char far* fileName = 0, TModule* module = 0);
  13.     virtual ~[[TEditFile]]();
  14. ##--BEGIN-- @OPT_APPL_PRINTING
  15.  
  16. //{{[[TEditFile]]VIRTUAL_BEGIN}}
  17.   public:
  18.     virtual void Paint(TDC& dc, bool erase, TRect& rect);
  19. ##:DBVirtual(\\"[[TEditFile]]", "Paint")
  20.     virtual void SetupWindow();
  21. ##:DBVirtual(\\"[[TEditFile]]", "SetupWindow")
  22. ##--BEGIN-- @OPT_APPL_MRU
  23.     virtual bool SaveAs();
  24. ##:DBVirtual(\\"[[TEditFile]]", "SaveAs")
  25. ##--END-- @OPT_APPL_MRU
  26. //{{[[TEditFile]]VIRTUAL_END}}
  27. //{{[[TEditFile]]RSP_TBL_BEGIN}}
  28.   protected:
  29.     void EvGetMinMaxInfo(MINMAXINFO far& minmaxinfo);
  30. //{{[[TEditFile]]RSP_TBL_END}}
  31. DECLARE_RESPONSE_TABLE([[TEditFile]]);
  32. ##--END-- @OPT_APPL_PRINTING
  33. ##--BEGIN-- !@OPT_APPL_PRINTING
  34.  
  35. //{{[[TEditFile]]VIRTUAL_BEGIN}}
  36.   public:
  37.     virtual void SetupWindow();
  38. ##:DBVirtual(\\"[[TEditFile]]", "SetupWindow")
  39. ##--BEGIN-- @OPT_APPL_MRU
  40.     virtual bool SaveAs();
  41. ##:DBVirtual(\\"[[TEditFile]]", "SaveAs")
  42. ##--END-- @OPT_APPL_MRU
  43. //{{[[TEditFile]]VIRTUAL_END}}
  44. ##--END-- !@OPT_APPL_PRINTING
  45. };    //{{[[TEditFile]]}}
  46. ##{hfooter.snp}
  47. >>[H]TEditFile [[TEditFile]]
  48.  
  49.  
  50. <<[CPP]TEditFile [[TEditFile]]
  51. ##{cheader.snp}
  52. #include <owl/pch.h>
  53.  
  54. ##<<TApplication QUERY_FILE_H [[FileName]]
  55. #include "[[FileName]]"
  56. ##--BEGIN-- !@OPT_APPL_DOCVIEW
  57. ##  --BEGIN-- @QUERY_APPL_MODEL == VALUE_MDI
  58. ##:     <<TMDIChild QUERY_WIND_CLIENT [[Client]]
  59. ##:     <<*Client QUERY_FILE_H [[FileName]]
  60. #include "[[FileName]]"
  61. ##  --END-- @QUERY_APPL_MODEL == VALUE_MDI
  62. ##--END-- !@OPT_APPL_DOCVIEW
  63. ##QUERY_FILE_H [[FileName]]
  64. #include "[[FileName]]"
  65.  
  66. #include <stdio.h>
  67.  
  68.  
  69. //{{[[TEditFile]] Implementation}}
  70.  
  71.  
  72. ##--BEGIN-- @OPT_APPL_PRINTING
  73. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 4
  74. //
  75. // Build a response table for all messages/commands handled
  76. // by [[TEditFile]] derived from TEditFile.
  77. //
  78. DEFINE_RESPONSE_TABLE1([[TEditFile]], TEditFile)
  79. //{{[[TEditFile]]RSP_TBL_BEGIN}}
  80. ##:DBResponse(\\"[[TEditFile]]", "", "", "WM_GETMINMAXINFO", "")
  81.   EV_WM_GETMINMAXINFO,
  82. //{{[[TEditFile]]RSP_TBL_END}}
  83. END_RESPONSE_TABLE;
  84.  
  85.  
  86. ##--END-- @OPT_APPL_PRINTING
  87. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  88. //--------------------------------------------------------
  89. // [[TEditFile]]
  90. // ~~~~~~~~~~
  91. // Construction/Destruction handling.
  92. //
  93. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  94. [[TEditFile]]::[[TEditFile]](TWindow* parent, int id, const char far* text, int x, int y, int w, int h, const char far* fileName, TModule* module)
  95. :
  96.   TEditFile(parent, id, text, x, y, w, h, fileName, module)
  97. {
  98. ##QUERY_WIND_STYLE [[StyleAttributes]]
  99. ##StyleAttributes != "" 3
  100.   // Override the default window style for TEditFile.
  101. [[StyleAttributes]]
  102.  
  103. ##{wndbkgd.snp}
  104.   // INSERT>> Your constructor code here.
  105.  
  106. }
  107.  
  108.  
  109. [[TEditFile]]::~[[TEditFile]]()
  110. {
  111.   Destroy();
  112.  
  113.   // INSERT>> Your destructor code here.
  114.  
  115. }
  116.  
  117.  
  118. void [[TEditFile]]::SetupWindow()
  119. {
  120.   TEditFile::SetupWindow();
  121.  
  122. ##<<TApplication QUERY_CLASS_NAME [[TApplication]]
  123.   [[TApplication]]* theApp = TYPESAFE_DOWNCAST(GetApplication(), [[TApplication]]);
  124.   FileData = theApp->FileData;
  125. }
  126. ##--BEGIN-- @OPT_APPL_PRINTING == TRUE
  127.  
  128.  
  129. ##@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  130. //
  131. // Paint routine for Window, Printer, and PrintPreview for an TEdit client.
  132. //
  133. void [[TEditFile]]::Paint(TDC& dc, bool, TRect& rect)
  134. {
  135. ##<<TApplication QUERY_CLASS_NAME [[TApplication]]
  136.   [[TApplication]]* theApp = TYPESAFE_DOWNCAST(GetApplication(), [[TApplication]]);
  137.   if (theApp) {
  138. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  139.     // Only paint if we're printing and we have something to paint, otherwise do nothing.
  140.     //
  141.     if (theApp->Printing && theApp->Printer && !rect.IsEmpty()) {
  142. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 3
  143.       // Use pageSize to get the size of the window to render into.  For a Window it's the client area,
  144.       // for a printer it's the printer DC dimensions and for print preview it's the layout window.
  145.       //
  146.       TSize   pageSize(rect.right - rect.left, rect.bottom - rect.top);
  147.  
  148.       HFONT   hFont = (HFONT)GetWindowFont();
  149.       TFont   font("Arial", -12);
  150.       if (!hFont)
  151.         dc.SelectObject(font);
  152.       else
  153.         dc.SelectObject(TFont(hFont));
  154.  
  155.       TEXTMETRIC  tm;
  156.       int fHeight = dc.GetTextMetrics(tm) ? tm.tmHeight + tm.tmExternalLeading : 10;
  157.  
  158. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  159.       // How many lines of this font can we fit on a page.
  160.       //
  161.       int linesPerPage = MulDiv(pageSize.cy, 1, fHeight);
  162.       if (linesPerPage) {        TPrintDialog::TData& printerData = theApp->Printer->GetSetup();
  163.  
  164.         int maxPg = ((GetNumLines() / linesPerPage) + 1.0);
  165.  
  166. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  167.         // Compute the number of pages to print.
  168.         //
  169.         printerData.MinPage = 1;
  170.         printerData.MaxPage = maxPg;
  171.  
  172. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  173.         // Do the text stuff:
  174.         //
  175.         int   fromPage = printerData.FromPage == -1 ? 1 : printerData.FromPage;
  176.         int   toPage = printerData.ToPage == -1 ? 1 : printerData.ToPage;
  177.         int   currentPage = fromPage;
  178.         TAPointer<char> buffer = new char[255];
  179.  
  180.         while (currentPage <= toPage) {
  181.           int startLine = (currentPage - 1) * linesPerPage;
  182.           int lineIdx = 0;
  183.           while (lineIdx < linesPerPage) {
  184. ##:@QUERY_APPL_COMMENT == VALUE_VERBOSE 2
  185.             // If the string is no longer valid then there's nothing more to display.
  186.             //
  187.             if (!GetLine(buffer, 255, startLine + lineIdx))
  188.               break;
  189.             dc.TabbedTextOut(TPoint(0, lineIdx * fHeight), buffer, strlen(buffer), 0, 0, 0);
  190.             lineIdx++;
  191.           }
  192.           currentPage++;
  193.         }
  194.       }
  195.     }
  196.   }
  197. }
  198.  
  199.  
  200. void [[TEditFile]]::EvGetMinMaxInfo(MINMAXINFO far& minmaxinfo)
  201. {
  202. ##<<TApplication QUERY_CLASS_NAME [[TApplication]]
  203.   [[TApplication]]* theApp = TYPESAFE_DOWNCAST(GetApplication(), [[TApplication]]);
  204.   if (theApp) {
  205.     if (theApp->Printing) {
  206.       minmaxinfo.ptMaxSize = TPoint(32000, 32000);
  207.       minmaxinfo.ptMaxTrackSize = TPoint(32000, 32000);
  208.       return;
  209.     }
  210.   }
  211.   TEditFile::EvGetMinMaxInfo(minmaxinfo);
  212. }
  213. ##--END-- @OPT_APPL_PRINTING == TRUE
  214. ##--BEGIN-- @OPT_APPL_MRU
  215.  
  216.  
  217. ##--BEGIN-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  218. // Override SaveAs to store the menu choice.
  219. //
  220. ##--END-- @QUERY_APPL_COMMENT == VALUE_VERBOSE
  221. bool [[TEditFile]]::SaveAs()
  222. {
  223.   if (TEditFile::SaveAs()) {
  224. ##<<TApplication QUERY_CLASS_NAME [[TApplication]]
  225.     [[TApplication]]* theApp = TYPESAFE_DOWNCAST(GetApplication(), [[TApplication]]);
  226.     theApp->SaveMenuChoice(GetFileName());
  227.     return true;
  228.   }
  229.   return false;
  230. }
  231. ##--END-- @OPT_APPL_MRU
  232. >>[CPP]TEditFile [[TEditFile]]
  233.